/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package migracion;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 *
 * @author SBernardez
 */
public class ClasePruebaFechas {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat  sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        Date fecha = sdf.parse("2012-03-11 00:00:00");
        System.out.println("Fecha:" + fecha);
        GregorianCalendar calendar = (GregorianCalendar)GregorianCalendar.getInstance();
        calendar.setTime(fecha);
        System.out.println("Gregorian Calendar: " + calendar.getTime());
        calendar.setFirstDayOfWeek(Calendar.SUNDAY);


        
//        System.out.println("Primer día de la semana:" + calendar.);
//        String[] diaSemana = { "Lunes", "Martes", "Miercoles","Jueves", "Viernes", "Sabado", "Domingo" };
        System.out.println("Resultado" + calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println("Primer dia de la semana:" + getPrimerDiaSemana(calendar));
        System.out.println("Primer dia de la semana:" + getUltimoDiaSemana(calendar));

//          System.out.println("Simple date format:" + diaSemana[calendar.get(Calendar.DAY_OF_WEEK) ]);

    }

     private static Date getPrimerDiaSemana(Calendar calendar){
        if (calendar.get(Calendar.DAY_OF_WEEK) == 2){
            return calendar.getTime();
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 3){
              long fecha = calendar.getTime().getTime() - 86400000;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 4){
              long fecha = calendar.getTime().getTime() - 86400000*2;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 5){
              long fecha = calendar.getTime().getTime() - 86400000*3;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 6){
              long fecha = calendar.getTime().getTime() - 86400000 * 4;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 7){
              long fecha = calendar.getTime().getTime() - 86400000 * 5;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 1 ){
              long fecha = calendar.getTime().getTime() - 86400000 *6;
              return new Date(fecha);
          }

            else{
            return null;
        }
    }

         private static Date getUltimoDiaSemana(Calendar calendar){
        if (calendar.get(Calendar.DAY_OF_WEEK) == 1){
            return calendar.getTime();
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 2){
              long fecha = calendar.getTime().getTime() + 86400000 * 6;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 3){
              long fecha = calendar.getTime().getTime() + 86400000*5;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 4){
              long fecha = calendar.getTime().getTime() + 86400000*4;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 5){
              long fecha = calendar.getTime().getTime() + 86400000 * 3;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 6){
              long fecha = calendar.getTime().getTime() + 86400000 * 2;
              return new Date(fecha);
          }else if (calendar.get(Calendar.DAY_OF_WEEK) == 7 ){
              long fecha = calendar.getTime().getTime() + 86400000 ;
              return new Date(fecha);
          }

            else{
            return null;
        }
    }

}
